﻿using System;
using System.Collections.Generic;
using System.Linq;
using PortalCurriculo.Domain;
using PortalCurriculo.WebUI.Helpers;

namespace PortalCurriculo.WebUI.UserControls.Curriculo.Cadastro
{
    public partial class ExperienciaInternacional : Curriculo, ICurriculo
    {
        public List<Domain.ExperienciaInternacional> Entidades { private get; set; }
        public static List<TipoExperienciaInternacional> Tipos { get; set; }

        public string ValidationGroup
        {
            get { return txtDescricao.ValidationGroup; }
            set
            {
                txtDescricao.ValidationGroup =
                    txtDataFinal.ValidationGroup =
                    txtDataInicio.ValidationGroup =
                    ddlIdioma.ValidationGroup = ddlPais.ValidationGroup = ddlTipo.ValidationGroup = value;
            }
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (Tipos == null && ddlTipo.Items.Count == 0)
            {
                Tipos = new TipoExperienciaInternacional().SelectAllActive<TipoExperienciaInternacional>().OrderBy(p => p.Descricao).ToList();
                WebHelper.FillDropDownList(ddlTipo, Tipos, false);
                WebHelper.FillDropDownList(ddlPais, new Pai().SelectAllActive<Pai>().OrderBy(p => p.Descricao), false);
                WebHelper.FillDropDownList(ddlIdioma, new Domain.Idioma().SelecionarAtivos(), false);
            }

            ddlTipo.SelectedIndexChanged += OnChangeControl;
        }

        public void Editar()
        {
            LimparCampos();
            var experienciaInternacional = (from espec in Entidades
                                            where espec.Id.Equals(IdEntidade)
                                            select espec).FirstOrDefault();

            txtDescricao.Value = experienciaInternacional.Descricao;
            txtDataFinal.Value = experienciaInternacional.DataFinal;
            txtDataInicio.Value = experienciaInternacional.DataInicio;
            ddlPais.SelectedValue = experienciaInternacional.IdPais.ToString();
            ddlTipo.SelectedValue = experienciaInternacional.IdTipoExperienciaInternacional.ToString();
            lblIdioma.Visible = ddlIdioma.Visible = experienciaInternacional.TipoExperienciaInternacional.Idioma;

            if (experienciaInternacional.TipoExperienciaInternacional.Idioma)
                ddlIdioma.SelectedValue = experienciaInternacional.IdIdioma.ToString();
        }

        public void LimparCampos()
        {
            txtDescricao.Value = string.Empty;
        }

        public void Salvar()
        {
            var experienciaInternacional = IsNew
                                               ? new Domain.ExperienciaInternacional()
                                               : Entidades.Where(esp => esp.Id == IdEntidade).FirstOrDefault();

            experienciaInternacional.Ativo = true;
            experienciaInternacional.Descricao = txtDescricao.Value;
            experienciaInternacional.DataFinal = txtDataFinal.Value;
            experienciaInternacional.DataInicio = txtDataInicio.Value.Value;
            experienciaInternacional.IdIdioma = ddlIdioma.Visible ? int.Parse(ddlIdioma.SelectedValue) : (int?)null;
            experienciaInternacional.IdPais = int.Parse(ddlPais.SelectedValue);
            experienciaInternacional.IdTipoExperienciaInternacional = int.Parse(ddlTipo.SelectedValue);
            experienciaInternacional.IdCurriculo = IdCurriculo;
            experienciaInternacional.Save();

            if (IsNew)
                Entidades.Add(experienciaInternacional);
        }

        protected void ddlTipo_TextChanged(object sender, EventArgs e)
        {
            var tipo = Tipos.Where(esp => esp.Id == int.Parse(ddlTipo.SelectedValue)).FirstOrDefault();
            lblIdioma.Visible = ddlIdioma.Visible = tipo.Idioma;
        }
    }
}